from ui import ImageProcessorUI
from .base import ImageProcessor
from PIL import Image

class ResizeProcessor(ImageProcessor):
    def process(self, image: Image.Image, **kwargs) -> Image.Image:
        """
        使用给定的宽度和高度调整图像大小。
        参数:
        - image: Image.Image，待处理的图像对象。
        - **kwargs: 关键字参数，必须包含 'width' 和 'height'。
        返回:
        - Image.Image: 调整大小后的图像对象。
        异常:
        - ValueError: 如果未提供 'width' 或 'height' 参数。
        此函数要求必须提供图像的新宽度和高度，且不接受未指定这些参数的情况。
        """
        width = kwargs.get('width')
        height = kwargs.get('height')
        if width is None or height is None:
            raise ValueError("必须提供 height 和 width 参数！")
        return image.resize((width, height), Image.Resampling.LANCZOS)

    def get_ui_parameters(self, ui: "ImageProcessorUI") -> dict:
        try:
            width = int(ui.resize_width_entry.get())
            height = int(ui.resize_height_entry.get())
            return {"width": width, "height": height}
        except ValueError:
            ui.show_error("请输入有效的宽度和高度数值")
            return {}